package com.ruoyi.template.mapper;

import com.ruoyi.common.core.domain.entity.SysMenu;
import com.ruoyi.template.domain.Template;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.template.domain.UserMenuBinding;
import com.ruoyi.template.domain.UserMenuMapping;
import com.ruoyi.template.dto.TemplateDTO;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface TemplateMapper extends BaseMapper<Template> {

    List<TemplateDTO> findTemplateWithDetails(String templateId);
    /**
     * 获取菜单列表（排除按钮）
     */
    List<SysMenu> selectMenuList(SysMenu menu);
    /**
     * 查询模板列表
     */
    List<TemplateDTO> selectTemplateList(@Param("templateName") String templateName, @Param("templateId") String templateId);
    /**
     * 根据 templateId 查询菜单 ID
     */
    List<Long> getMenuIdsByTemplateId(@Param("templateId") String templateId);
    /**
     * 校验用户和菜单是否已绑定其他模板
     *
     * @param bindings 用户和菜单组合
     * @param currentTemplateId 当前修改的模板ID
     * @return 已绑定的用户和菜单记录
     */
    List<UserMenuMapping> checkExistingBindings(
            @Param("bindings") List<UserMenuBinding> bindings,
            @Param("currentTemplateId") String currentTemplateId
    );
    /**
     * 根据 userId 和 menuId 查找共同的 templateId
     * @param userId 用户 ID
     * @param menuId 菜单 ID
     * @return templateId 列表
     */
    String findTemplateIdByUserIdAndMenuId(@Param("userId") Long userId, @Param("menuId") Long menuId);
}




